package com.wt.springsamples.biz.mybatis.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.wt.springsamples.model.SysUser;
import com.wt.springsamples.model.vo.SysUserOrgVo;
import org.apache.ibatis.annotations.MapKey;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;
import java.util.Map;

@Mapper
public interface SysUserMapper extends BaseMapper<SysUser> {

    /**
     * 根据账号获得User
     * @param loginName
     * @return
     */
    SysUser selectByLoginName(String loginName);

    /**
     * 当有多个参数时，且没有使用@para mybatis将参数表封装成Map, key:param1,param2..., xml 需要使用#{param1}方式取值，或者使用#{0}的索引下标
     * 建议使用具名参数
     * @param id
     * @param name
     * @return
     */
    SysUser selectByIdAndName(long id, String name);

    /**
     * xml 中使用#{id},@{name}取值
     * @param id
     * @param name
     * @return
     */
    SysUser selectByIdAndName2(@Param("id") long id, @Param("name") String name);

    /**
     * @param orgId
     * @return
     */
    List<SysUser> getListByOrgId(@Param("orgId") long orgId);

    /**
     *
     * @param sysUser
     * @return
     */
    List<SysUser> getListBy(SysUser sysUser);

    /**
     *
     * @param name
     * @return
     */
    @MapKey("id")
    Map<Integer, SysUser> getUserMap(String name);

    /**
     *
     * @param userId
     * @return
     */
    SysUserOrgVo getUserOrgVo(Integer userId);

    /**
     *
     * @param sysUser
     * @return
     */
    int insertUser(SysUser sysUser);

    /**
     *
     * @param sysUser
     * @return
     */
    int insertUser2(SysUser sysUser);

    /**
     *
     * @param sysUser
     */
    void updateUser(SysUser sysUser);

    /**
     * @param ids
     */
    void  deleteByIds(List<Long> ids);

    List<SysUser> selectAll(SysUser query);
}
